Split-Apply-Combine(分组-应用-合并)是数据分析中最重要的操作模式:
# ⚠️ 平台原始代码 - 请原样输入至教学平台(注释除外),平台才会判定答案正确
import pandas as pd # 导入Pandas数据分析库
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', # 创建数据框df
'foo', 'bar'], # A列分组标签的续行数据
'B' : ['one', 'one', 'two', 'three', # "B"的数据序列
'two', 'two'], # B列分组标签的续行数据
'C' : [1, 5, 5, 2, 5, 5], # "C"的数据序列
'D' : [2.0, 5., 8., 1., 2., 9.]}) # "D"的数据序列
grouped = df.groupby('A')[['C', 'D']] # 按指定列分组聚合
result=grouped.transform(lambda x: (x - x.mean()) / x.std()) # 定义匿名函数result
print(result) # 输出分析结果数据 C D
0 -1.154701 -0.577350
1 0.577350 0.000000
2 0.577350 1.154701
3 -1.154701 -1.000000
4 0.577350 -0.577350
5 0.577350 1.000000
df.groupby('A'):按 A 列的值将数据分组[['C', 'D']]:选择 C、D 两列进行后续操作transform():对每组应用函数,返回与原数据形状相同的结果lambda x: (x - x.mean()) / x.std():标准化公式agg() 是聚合操作中最灵活的方法transform 返回与原数据相同形状的结果,适合组内标准化等场景。
filter() 基于组的统计特征过滤整个组(不是过滤行)。
apply() 可对每组应用任意复杂的自定义函数。
| 方法 | 功能 | 返回形状 |
|---|---|---|
agg() |
聚合统计(均值、求和等) | 每组一行 |
transform() |
组内转换(标准化等) | 与原数据相同 |
filter() |
按条件过滤整个组 | 原数据子集 |
apply() |
灵活应用任意函数 | 取决于函数 |
[商业大数据分析与应用]